# ifndef BIT_READER_H
# define BIT_READER_H

#include <stdio.h>
#include <stdlib.h>


typedef struct _bitstream
{
    int length;
    unsigned char buffer; // Unsigned int instead of unsigned long for cross-platform compatity
} bitstream;

/**
 * Helper function
 * Read one byte of data into stream
 */
int read_bit(FILE* infile, bitstream* pstream);

/**
 * Helper function
 * Print out the information of the stream
 */
void show_bit(bitstream* pstream);

/**
 * Initialize the buffer
 *
 */
void init_buffer(bitstream* pstream);

/**
 * Translate from dictionary size to actual width
 */
int size_to_width(int size);

/**
 * Read given width a data and return
 */
int read_buffer(bitstream* pstream, int width, FILE* infile);


# endif